{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 微分\n",
    "### 梯形公式微分"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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WT7f19eX1q1b87///Y/t27df8vjx48evONMtt9xCxYoVmTBhAnFxcS6PpY8+lSpVirvvvpt33nmHo0ePXvHrPvDAA6SmpjJ58mSX7W+99RYOh4P777//inM3bdqUIkWKMGrUqEv6T6Xnrl+/PqVKlWLatGkurRmWLl3Kzp07ad68OQBnz5695Bg33ngjRYoUcXlew4YN2b59+yVtHi5cuMBTTz1FaGgoEydOZPbs2cTGxvLCCy9ckjs+Pp4//viDRo0aXfF7FnE3GlkSySeWLl3Krl27SElJITY2llWrVrFixQrKly/P4sWLL5k8fC2efPJJPv74Y5599llWr17N7bffTmpqKrt27eLjjz9m+fLl1K9fP8tjjB49mtWrVxMeHk7Xrl2pXr06p06dYsuWLXzzzTecOnXqijL5+PgwdepUWrRoQZ06dYiKiqJMmTLs2rWLHTt2OE8tTZkyhTvuuIOaNWvStWtXKlWqRGxsLOvXr+fQoUP88ssvmb5GixYtuOeee3jllVf466+/qF27Nl9//TWff/45ffr0cY4SXYmgoCDeeustunTpwq233soTTzxBsWLF+OWXXzh79ixz5syhQIECjBkzhqioKBo3bszjjz9ObGwsEydOpEKFCs5i5vfff6dJkya0adOG6tWr4+fnx2effUZsbCzt2rVzvmbLli0ZPnw4a9eupWnTps7tr7/+Olu3bmXlypUUKVKEWrVqMWTIEAYNGsSjjz7KAw884Nz3m2++wbIsWrZsecXvWcTtmLoMT0TyRnrrgPTF39/fCgkJse677z5r4sSJVkJCwiXPudbWAZZlX84+ZswY6+abb7YCAgKsYsWKWfXq1bNeffVVKz4+3rkfYPXo0SPD7LGxsVaPHj2ssLAwq0CBAlZISIjVpEkTa/r06c590lsHLFy40OW5+/btswBr1qxZLtu/++4767777rOKFCliFS5c2KpVq5b19ttvu+zzxx9/WB07drRCQkKsAgUKWDfccIP14IMPWp988kmGOf/pzJkz1gsvvGCFhoZaBQoUsG666SZr7NixLu0JLCv7rQPSLV682GrUqJFVsGBBKygoyGrQoIE1b948l30WLFhg1a1b1woICLCKFy9utW/f3jp06JDz8RMnTlg9evSwqlatahUuXNgKDg62wsPDrY8//viS16tVq5bVuXNn5++bN2+2/Pz8rF69ernsl5KSYt16661WaGioS0uGtm3bWnfccUe235+IO9O94URE5BIffPABPXr04MCBA1d8W5aYmBgqVqzI/PnzNbIkXkFzlkRE5BLt27enXLlyTJky5YqfO2HCBGrWrKlCSbyGRpZEREREsqCRJREREZEsqFgSERERyYKKJREREZEsqFgSERERyYKaUuaAtLQ0jhw5QpEiRXTTSBEREQ9hWRZnzpwhNDQUH5/Mx49ULOWAI0eOXHJjUBEREfEMBw8epGzZspk+rmIpB6TfMPPgwYMEBQUZTiMiIiLZkZCQQFhYmMuNrzOiYikHpJ96CwoKUrEkIiLiYS43hUYTvEVERESyoGJJREREJAsqlkRERESyoGJJREREJAsqlkRERESyoGJJREREJAsqlkRERESyoGJJREREJAsqlkRERESyoGJJREREJAsqlkRERESyoGJJREREJAseVSytW7eOFi1aEBoaisPhYNGiRZd9zpo1a7jlllsICAigcuXKzJ49+5J9pkyZQoUKFQgMDCQ8PJyNGzfmfHgREck7lmUvIjnAo4qlpKQkateuzZQpU7K1/759+2jevDn33HMPW7dupU+fPnTp0oXly5c791mwYAF9+/Zl6NChbNmyhdq1axMZGcmxY8dy622IiEhOOnkS1q6FyZPhmWegUSMIDoadOy/uM3s2hIZCtWpw223QrBlER8O330JKirHo4hkcluWZpbfD4eCzzz6jVatWme4zYMAAlixZwvbt253b2rVrR1xcHMuWLQMgPDycW2+9lcmTJwOQlpZGWFgYvXr1YuDAgdnKkpCQQHBwMPHx8QQFBV39mxIRkex7910YOhSOHMn48fnzoW1be33cOHjppYz3K1oUFi2Cxo1zI6W4sex+f/vlYaY8t379eiIiIly2RUZG0qdPHwDOnz/P5s2biY6Odj7u4+NDREQE69evz/S4ycnJJCcnO39PSEjI2eAiInKp5GR7Sf9SCw29WChVrAg1akDNmheX//zn4nOjouDeeyEhAeLj4fhxWLMGli6FU6fsEad0CxZATIw9ShUYmGdvT9yXVxdLMTExlC5d2mVb6dKlSUhI4O+//+b06dOkpqZmuM+uXbsyPe6oUaN49dVXcyWziIj8y549MH06zJplFzAjRtjbIyPh66/t02pFimR9jOuvt5d/6tIFUlNh2zYoVeri9unT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jq+vL4899pjLfs2aNXPZb968eXnxdkRE3M+FC/Dtt6ZTSEZ++MG+InH0aNNJ8h2PKpbGjx9P165diYqKonr16kybNo1ChQoxc+bMDPcvXrw4ISEhzmXFihUUKlTokmIpICDAZb9ixYrlxdsREXE/Y8fCXXfBwIGmk8i/HTgAv/9utxL47TfTafIVjymWzp8/z+bNm4mIiHBu8/HxISIigvXr12frGO+99x7t2rWj8L9uVLhmzRpKlSpFlSpV6N69OydPnszR7CIiHmHfPvuqN4Dq1c1mkUu1bQsPPmiP/nXpomaVechjiqUTJ06QmppK6dKlXbaXLl2amJiYyz5/48aNbN++nS5durhsb9asGe+//z4rV65kzJgxrF27lvvvv5/ULP4lTE5OJiEhwWUREfFolgW9etlzYu65B5580nQi+TeHw+69VKQIrF8PU6aYTpRveEyxdK3ee+89atasSYMGDVy2t2vXjoceeoiaNWvSqlUrvvzySzZt2sSaNWsyPdaoUaMIDg52LmG6M7SIeLrPP4clS+zmk//9r/3FLO6nbFl44w17/eWX7V5Ykus8plgqUaIEvr6+xMbGumyPjY0lJCQky+cmJSUxf/58OnfufNnXqVSpEiVKlGDv3r2Z7hMdHU18fLxzOXjwYPbehIiIO0pMhN697fWXXrL7+oj76tbNnleWlGTfs8+yTCfyeh5TLPn7+1OvXj1Wrlzp3JaWlsbKlStp2LBhls9duHAhycnJdOjQ4bKvc+jQIU6ePEmZMmUy3ScgIICgoCCXRUTEYw0fDgcPQoUK8MorptPI5fj4wIwZF5tUqrN3rvOYYgmgb9++zJgxgzlz5rBz5066d+9OUlISUVFRAHTs2JHo6OhLnvfee+/RqlUrrr/+epftiYmJvPTSS/z444/89ddfrFy5kpYtW1K5cmUiIyPz5D2JiBhXpw6UKgVvvw2FCplOI9nxn//A5s2wdKl9w13JVR7VErRt27YcP36cIUOGEBMTQ506dVi2bJlz0veBAwfw8XGt/3bv3s13333H119/fcnxfH19+fXXX5kzZw5xcXGEhobStGlThg8fToDayotIfvH44/DQQ/CvK4XFzd18s+kE+YbDsnSy81olJCQQHBxMfHy8TsmJiOewLE3k9gYnT8LQofDss1Cjhuk0HiW7398edRpORERyyKlT9um3efM0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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import math\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "N = 64\n",
    "dx = 2*math.pi/N\n",
    "x = np.linspace(0,2*math.pi,N)\n",
    "f = []\n",
    "for i in x:\n",
    "    f.append(math.cos(i))\n",
    "dfdx = []\n",
    "i=2\n",
    "for i in range(np.size(x)-2):\n",
    "    dfdx.append((math.cos(x[i+2])-math.cos(x[i]))/(2*dx))\n",
    "df = 2*dfdx[0]-dfdx[1]\n",
    "dfdx=[df]+dfdx\n",
    "dfdx.append(2*dfdx[np.size(dfdx)-1]-dfdx[np.size(dfdx)-2])\n",
    "plt.plot(x,np.array(dfdx),linestyle='--',color='r')\n",
    "plt.xlabel('X')\n",
    "plt.ylabel('Y')\n",
    "plt.title('Difference of cos(x)')\n",
    "plt.show()"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 复化求积"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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exbGj4dp06wdnfv2tc7h4+trdjIRkTRLBZCIvTpyxDqHz7x5kDWrtegZOBBy5zY7mYhImqcCSMTe/PWXdVX2pUshXz7rsPZ+/cDNzexkIiLphgogEXtgGBAYaC181q2D4sVh+nTo3h1cXMxOJyKS7mgYvIiZ4uLgf/+DqlWhaVNr5+aFC+HQIet6XSp+RERShAogETPExFiHspcqBZ06QY4c1tmbd+6E558HJyezE4qIpGu6BCaSmqKjrUPZx4+H0FDrBIY//gjVqpmdTETEoagAEkkthw/Diy9av770Erz1FpQsaXYqERGHpAJIJKUZhrVD85Ah4OcHQUFQvrzZqUREHJr6AImkpOvXoWNH66KkL72k4kdExE6oBUgkpWzaZF2uIioKFi2y9vcRERG7oBYgkeR29y588AE0bAiFCsG+fSp+RETsjFqARJLT6dPQtSts3w6jRsHIkRrSLiJih1QAiSSXBQusS1Z4eFgvf9WubXYiERF5CF0CE3laUVHWFdo7d4ZmzayXvFT8iIjYNbUAiTyNPXugSxc4exa+/x569QKLxexUIiLyH9QCJPIk4uNhwgR45hnInBl274bevVX8iIikESqARJLq0iV47jkYOhT697d2eC5RwuxUIiKSBLoEJpIUf/wB/v7W2Z1XroTmzc1OJCIiT0AtQCKPIyYG3nzTWvBUrAh//63iR0QkDVMLkMh/OXbM2tF5/3748kvrml4Z9LeDiEhapt/iIg9jGDBrFlSuDBERsG2btd+Pih8RkTRPv8lFEnPzprXVp3dv6NTJOsqrShWzU4mISDLRJTCR+23dal3O4sYN+PlnePFFsxOJiEgyUwuQyD1xcfDJJ1CvHnh7w969Kn5ERNIptQCJAJw7B927W9fwGjnSupBpRv33EBFJr/QbXmTJEujTB7JmhfXroX59sxOJiKRLhmFw7NgxMmfOTMGCBU3Noktg4rhu3YLXXoMOHaBBA+sipip+RESS1bVr17h79y4AL774IiVLlmTSpEkmp1ILkDiq/fut/XtOnIApU6BfP63jJSKSDGJiYti6dStr1qxh9erV7N69my1btlCzZk369u2Lv78/9erVMzumuS1AmzZtonXr1nh7e2OxWFi6dKntsdjYWIYPH065cuXImjUr3t7e9OjRgwsXLjzyOUePHo3FYklwK1myZAqfiaQZhgETJ0K1auDkBEFB8MorKn5ERJ6QYRgcOXLEdr927do0atSI77//nhIlSjBz5kyKFy8OwLPPPkvLli3Jli2bWXFtTG0BioqKokKFCvTu3ZsOHTokeOzWrVvs3r2b999/nwoVKnDjxg0GDx5MmzZtCAoKeuTzlilThsDAQNv9jOrMKgBXr1rn9fntNxgwAD7/3LqSu4iIJMmlS5cIDAxkzZo1rFmzhgsXLhAcHEyRIkX4/PPP8fT0pHz58mSw44ljTa0MWrRoQYsWLRJ9zMPDgzVr1iTYNnHiRKpXr86ZM2ce2XkqY8aM5M2bN1mzShq3di289BLcuQO//gpt2pidSEQkzbh9+zb79u3jmWeewTAMypcvz+XLlylfvjxdu3bl2WefJX/+/AA0atTI5LSPJ001jYSFhWGxWMiePfsj9zt+/Dje3t64urpSs2ZNAgICHlkwxcTEEBMTY7sfHh6eXJHFbLGx8MEHMHYsNGwIP/wA//+fVEREEmcYBn///TerV69mzZo1bNq0idjYWK5evUqOHDlYtGgRRYsWTdONDfbbNnWf6Ohohg8fTpcuXXB3d3/ofjVq1GD27NmsWrWKyZMnc/LkSerWrUtERMRDjwkICMDDw8N28/HxSYlTkNQWEgJ16sC4cfDpp7B6tYofEZGHuHDhAmvXrgWsn7k1atRg1KhRODk5ERAQwL59+2wNEHXq1EnTxQ+AxTAMw+wQABaLhSVLltCuXbsHHouNjeX555/n3LlzbNiw4ZEF0P1u3ryJr68v48ePp0+fPonuk1gLkI+PD2FhYUl6LbEjP/5oHeKeO7d1OYvq1c1OJCJiV2JiYli3bp2tlefgwYO4u7tz7do1MmbMyJ49eyhdujQuLi5mR31s4eHheHh4PNbnt923AMXGxtKpUydOnz7NmjVrklyQZM+eneLFixMcHPzQfVxcXHB3d09wkzQqIgJ69LDO6ty2LezZo+JHRASIj48nKCiIFStWAHDjxg1atmzJokWLqFGjBvPnzyckJMQ2cKhSpUppqvhJKrvuA3Sv+Dl+/Djr168nZ86cSX6OyMhIQkJCeOmll1IgodiVnTutK7hfumTt66N/cxFxcNevX2fx4sWsWbOGtWvXcu3aNUqVKsVzzz1H3rx5CQkJoVChQlgccCoQU1uAIiMj2bt3L3v37gXg5MmT7N27lzNnzhAbG0vHjh0JCgrixx9/JC4ujtDQUEJDQ7lz547tORo3bszEiRNt94cNG8bGjRs5deoUW7dupX379jg5OdGlS5fUPj1JLfHx1k7OtWqBp6e11UfFj4g4oPDwcJYtW8Zvv/0GWPv1vPLKK5w+fZrXX3+dTZs2sW/fPtv+hQsXdsjiB0xuAQoKCqJhw4a2+0OHDgXA39+f0aNHs2zZMgAqVqyY4Lj169fToEEDAEJCQrh69artsXPnztGlSxeuXbtG7ty5qVOnDtu3byd37twpezJijgsXrJe81q6Ft9+Gjz8GZ2ezU4mIpJpTp04xd+5cVq9ezfbt27l79y5t2rShdevWlClTxjZySxKym07Q9iQpnajERMuXQ69e1lXb586FJk3MTiQikuJOnDjBmjVryJ8/P61atWLdunW0b9+exo0b8+yzz9K0aVOKFClidkxTJOXz2677AIkkKjra2trz7bfw3HMwa5Z1tJeISDq1a9cuZsyYwZo1awgJCcHJyYkhQ4bQqlUr6tevbxu5JY9P75akLYcOWTs6Hz0K33xjXdLCQa9fi0j6FBsby44dO1izZg21a9emadOmBAcHs3btWpo3b86zzz5LgwYN8PDwAMDJycnkxGmTCiBJGwwDpk2DN94APz/46y8oX97sVCIiyeb3339n6tSprF+/noiICDw9PfHy8qJp06Z06tSJzp07mx0xXbH7eYBEuH4dOnaEV1+1ju4KClLxIyJp2rVr11iwYAF9+/Zl8+bNAJw9e5bw8HDeeecd/vrrLy5fvkz//v0BHHakVkpSC5DYt40brZMaRkXBokXQoYPZiUREnti8efP47rvv2L59O4ZhULp0aVq3bg3AK6+8wiuvvGJyQsehFiCxT3fvWhcxbdQICheGfftU/IhImnPkyBHGjBnDsWPHADh//jxeXl58//33nD17loMHD9K2bVuTUzomtQCJ/Tl1Crp1g+3bYfRoePddUCc/EUkjDhw4wC+//MKiRYs4fPgw2bJlo0SJEhQvXpzhw4ebHU/+n1qAxL4sWAAVK8K5c7BpE7z/voofEbFr8fHx7Nixg+vXrwMwadIkJk6cSPXq1fn111+5cuUKHTt2NDml3E8TISZCEyGaICoKBg2CmTOhUyeYOhWyZzc7lYhIouLi4vjzzz9ZtGgRixcv5vz580yfPp2+ffty/fp13NzcyJQpk9kxHY4mQpS0Zfdu69w+587B999bZ3fWiAcRsTOxsbEAZMqUid69e/PDDz9QoEABnn/+eTp06ECdOnUA8PT0NDOmPCZdAhPzxMfD+PHwzDOQJYu1EOrdW8WPiNiN6Oholi1bhr+/P15eXqxYsQKAwYMHs337dk6fPs3XX39N/fr1NSFhGqMWIDHHpUvQsyesWmWd3DAgAFxczE4lImLz4YcfMm7cOCIjIylVqhQDBgygXLlyAFSuXNnkdPK0VABJ6vvjD+sK7gArV0Lz5ubmERGHd+PGDZYvX86iRYsYMWIENWrUsI3aev755ylVqpTZESWZqQCS1PXJJ9aRXc2awZw5kCeP2YlExIEtWrSI6dOns3btWu7evcszzzzD7du3AejSpYvJ6SQlqQ+QpJ6ff7YWPx98AL//ruJHRFLd+fPnmThxIqdPnwasq6xHR0czfvx4zp49y7Zt22jQoIG5ISVVqAVIUseePdCnj3VZi9Gj1dFZRFLNyZMnWbRoEYsWLWL79u1kzJgRLy8vfH19GTNmjNbZclBqAZKUd/kytGsHpUtbV3TXLxsRSWFHjhwhIiICsHZmfu+998iTJw8//PADly9fplOnToAWGXVkmggxEZoIMRnFxkKTJnDkiHUVdx8fsxOJSDpkGAb79u1j8eLFLFq0iEOHDjFnzhx69OjBhQsXcHd3J1u2bGbHlBSmiRDFfrzxBmzdCuvWqfgRkWRlGAaGYZAhQwb69OnDrFmzyJ49O23atCEgIIBnn30WAG9vb5OTij3SJTBJOd9/D5MmwbffQt26ZqcRkXQgLi6OjRs3MnjwYAoWLMiaNWsA6N27N6tWreLSpUvMmTOHNm3akDlzZpPTij1TC5CkjG3b4LXXoF8/ePVVs9OISDowduxYxo8fz+XLl8mfPz8dOnSgYMGCALZlKEQelwogSX7nz0OHDlC9urX1R0QkiaKjo1m9ejWLFy/mzTffpFy5cnh6etKjRw+ef/55qlevToYMuoghT04FkCSv6Ghr8ePkBAsXgrOz2YlEJA1ZuXIlc+bMYcWKFbYlKC5fvgzAyy+/bHI6SU9UPkvyMQzrZa99+2DpUsib1+xEImLnbt68ydy5cwkNDQWsBdCxY8cYPnw4hw4d4tChQzRu3NjklJIeqQVIks+338Ls2fDDD1C1qtlpRMROXblyhaVLl7J48WLWrl1LbGws8+fPp3PnzowfP56MGfXRJClPLUCSPNatg6FDrcPeX3rJ7DQiYmfu3r3L3bt3AXj99dd59dVXbUtQnDt3js6dOwOo+JFUo4kQE6GJEJPo5EmoVg0qVbKu7q5fYCLy/06ePMnMmTOZNWsWEyZM4IUXXuDUqVNkyZIFLy8vs+NJOqOJECX1REVZl7lwd4f581X8iAgAgYGBjB07lsDAQNzd3enatStlypQBwM/Pz9xwIqgAkqdhGNCrF4SEWOf9yZnT7EQiYqKDBw/i6upKkSJFCAkJITo6mtmzZ9OxY0eyZs1qdjyRBNQHSJ7cZ5/B//4Hc+ZAuXJmpxERE0RGRjJz5kxq1apF2bJl+frrrwHo168fmzdvxt/fX8WP2KUnKoDu3r1LYGAgU6dOta22e+HCBSIjI5M1nNixFStg5Eh47z14/nmz04iICZYsWUK+fPno27cv7u7uLFy4kHHjxgFaZV3sX5IvgZ0+fZrmzZtz5swZYmJiePbZZ3Fzc2Ps2LHExMQwZcqUlMgp9uToUejaFVq1gg8/NDuNiKSS69evM2/ePNzc3OjVqxfly5fnzTffpFevXvj6+podTyRJktwCNHjwYKpWrcqNGzcSLDTXvn171q5dm6zhxA6FhUHbtuDtDfPmgaaiF0nX4uPjWbduHV27dsXb25s333yTffv2AVCkSBFGjx6t4kfSpCS3AG3evJmtW7fifN8SB35+fpw/fz7Zgokdio+H7t0hNBT++ss68ktE0qW7d++SMWNG/vzzTxo3bkyJEiX45JNP6NGjh4avS7qQ5AIoPj6euLi4B7afO3cONze3ZAklduqDD6x9f5Yvh+LFzU4jIsns7t27rFy5khkzZhAVFUVgYCB16tRh69atPPPMM+rXI+lKkq9fNG3alK+++sp232KxEBkZyahRo2jZsmVyZhN7snAhjBkDn34K+ncWSVdu3LjByJEjKViwIG3atOH8+fN07NgRwzDIkCEDNWvWVPEj6U6SZ4I+d+4czZo1wzAMjh8/TtWqVTl+/Di5cuVi06ZN6aJpVDNB3+fvv6FmTWjdGn7+GfSLUCTNi46OZs+ePdSsWZOoqChKlSpFmzZt6NOnD5UqVTI7nsgTScrn9xMthXH37l3mz5/P33//TWRkJJUrV6Zbt24JOkWnZSqA/uXaNesyF+7usGULaD4PkTRt//79zJgxg7lz5xIdHc3ly5fJli0bcXFxODk5mR1P5Kmk+FIYGTNmpHv37k8UTtKQu3ehUyeIiLAudqriRyTNunPnDvXr12f79u14eXnx8ssv06dPH7Jlywag4kccTpILoB9++OGRj/fo0eOJw4ideest2LgRAgNBa/eIpCmGYbB9+3YWLFjAuHHjcHZ2plmzZrz99tu0atWKTJkymR1RxFxGEmXPnj3BLWvWrIbFYjFcXFyMHDlyJOm5Nm7caLRq1crIly+fARhLlixJ8Hh8fLzx/vvvG3nz5jVcXV2Nxo0bG8eOHfvP5504caLh6+truLi4GNWrVzd27NiRpFxhYWEGYISFhSXpuHRlzhzDAMP45huzk4hIEly5csUYP368Ubp0aQMwfH19jeDgYLNjiaSKpHx+J3kU2I0bNxLcIiMjOXr0KHXq1OHnn39O0nNFRUVRoUIFJk2alOjjn3/+Od988w1Tpkxhx44dZM2alWbNmhEdHf3Q5/zll18YOnQoo0aNYvfu3VSoUIFmzZpx+fLlJGVzaH/9Bf36WRc6HTDA7DQi8h+Mf3XlbNKkCcOHD6ds2bKsXr2aEydOUKRIERPTidip5Kq6du7caZQoUeKJj+e+FqD4+Hgjb968xhdffGHbdvPmTcPFxcX4+eefH/o81atXN/r372+7HxcXZ3h7exsBAQGPncWhW4AuXjSM/PkNo0YNw4iONjuNiDzC2bNnjY8//tjw8/Mz9u/fbxiGYQQFBRmXL182OZmIOVK0BehhMmbMyIULF5Lr6Th58iShoaE0adLEts3Dw4MaNWqwbdu2RI+5c+cOu3btSnBMhgwZaNKkyUOPAYiJiSE8PDzBzSHFxFgXNo2Ph8WLwcXF7EQikohVq1bRqlUrfH19CQgIoGHDhrj8///XKlWqkDt3bpMTiti/JHeCXrZsWYL7hmFw8eJFJk6cSO3atZMtWGhoKAB58uRJsD1Pnjy2x+539epV4uLiEj3myJEjD32tgIAAPtSinjBoEAQFWTs+e3ubnUZE/uX48ePkzp2b7Nmz8/vvv3P58mUmT57Miy++qOk6RJ5Akgugdu3aJbhvsVjInTs3jRo14ssvv0yuXKlqxIgRDB061HY/PDwcHx8fExOZYMoUmDYNvv8ennnG7DQiAty+fZtFixYxY8YMNm7cyNdff82gQYP48ssvNYpL5Ck90VpgqSFv3rwAXLp0iXz58tm2X7p0iYoVKyZ6TK5cuXBycuLSpUsJtl+6dMn2fIlxcXGxNR87pM2bYeBAa4fn3r3NTiMiwIwZM3jrrbe4efMmDRs25Mcff6RDhw4AKn5EkkGy9QFKboUKFSJv3rysXbvWti08PJwdO3ZQs2bNRI9xdnamSpUqCY6Jj49n7dq1Dz3G4Z09Cx07Qp06MH682WlEHFZ4eDhTp05lw4YNAPj5+fHaa69x/Phx1q1bR9euXXF1dTU3pEg68lgtQP++PPRfxifhQzQyMpLg4GDb/ZMnT7J37148PT0pWLAgQ4YM4ZNPPqFYsWIUKlSI999/H29v7wSX4Ro3bkz79u0Z8P/DtYcOHYq/vz9Vq1alevXqfPXVV0RFRdGrV6/HzuUwbt+Gdu0gc2ZYsAD0V6VIqjIMg61btzJjxgwWLFhAdHQ0o0ePpkGDBjRp0iTBgA4RSV6PVQDt2bPnsZ4sqasFBwUF0bBhQ9v9e4WWv78/s2fP5u233yYqKop+/fpx8+ZN6tSpw6pVqxL8FRQSEsLVq1dt9zt37syVK1f44IMPCA0NpWLFiqxateqBjtEOzzDg5Zfh8GHYuhU0akQk1RiGgcViYc6cOfTq1YtChQoxcuRI/P39yZ8/v9nxRBzCEy2Gmt45xGKoX34Jw4bB/PnQubPZaUQcwuHDhxk7dizZs2fnq6++4ubNm+zatYuGDRuSIYPd9kgQSTOS8vmt/3GOaPVqePttGD5cxY9IKti1axcdO3akTJkyBAYGUqpUKQCyZ89O48aNVfyImOCJVoMPCgpiwYIFnDlzhjt37iR4bPHixckSTFJISAi8+CI0awZjxpidRiTdO3XqFNWqVaNw4cJMmzaNl156ybFHnYrYiST/2TF//nxq1arF4cOHWbJkCbGxsRw8eJB169bh4eGREhkluUREQNu2kCsX/PQTODmZnUgk3TEMg5UrV9KjRw/i4uLw8/Nj/fr1HDlyhL59+6r4EbETSS6APv30UyZMmMBvv/2Gs7MzX3/9NUeOHKFTp04ULFgwJTJKcoiPB39/OHMGfv0Vsmc3O5FIuhIXF8f//vc/KleuTMuWLTl27BhXrlwBoH79+mTM+EQN7iKSQpJcAIWEhPDcc88B1nl3oqKisFgsvPHGG0ybNi3ZA0oy+eQTWLIE5s2D/+9/ICLJ57nnnqNTp07kypWLdevWsW3btkdOwCoi5kpyAZQjRw4iIiIAyJ8/PwcOHADg5s2b3Lp1K3nTSfL49VcYNQo++gjatDE7jUi6cPv2bSZNmmSby2zw4MFs376dNWvW0LBhwyRPCyIiqeuxC6B7hU69evVYs2YNAC+88AKDBw/m5ZdfpkuXLjRu3DhlUsqTO3QIuneHDh1g5Eiz04ikeeHh4YwdOxY/Pz8GDRpkm7m5RYsW1KhRw9xwIvLYHvuidPny5alWrRrt2rXjhRdeAGDkyJFkypSJrVu38vzzz/Pee++lWFB5AjduWDs9+/nBnDmgobYiT+XXX3+lZ8+e3Lp1i549e/L2229TpEgRs2OJyBN47IkQN2/ezKxZs1i4cCHx8fE8//zz9O3bl7p166Z0xlSXLiZCjIuDVq1gxw7YuRP0S1rkiVy4cIHTp09Ts2ZNjh07xpQpU3jzzTc1Y7OIHUrK53eSZ4KOiopiwYIFzJ49m82bN1O0aFH69OmDv79/uunwly4KoOHDYdw4+OMP0HpCIkl24sQJxo4dy+zZsylbtiy7du0yO5KI/IcUnQk6a9as9OrVi40bN3Ls2DFeeOEFJk2aRMGCBWmjDrb24eef4fPP4YsvVPyIJNGNGzfo3r07xYoVY+nSpXz00UesX7/e7Fgiksyeei2wqKgofvzxR0aMGMHNmzeJi4tLrmymSdMtQHv2QO3a8Pzz8MMPoJEoIo8lODiYokWLEhcXR7NmzWjfvj29e/cmc+bMZkcTkceUlM/vJ56Za9OmTcycOZNFixaRIUMGOnXqRJ8+fZ706SQ5XL4M7dpBmTIwbZqKH5H/YBgGGzZs4NNPP2Xt2rUcOnSIkiVLEhgYaHY0EUlhSboEduHCBT799FOKFy9OgwYNCA4O5ptvvuHChQtMnz6dZ555JqVyyn+JjYUXXoDoaFi8GPRXq8gjrVy5ktq1a9OoUSOuXr3KL7/8QrFixcyOJSKp5LFbgFq0aEFgYCC5cuWiR48e9O7dmxIlSqRkNkmKN96Abdtg3Trw8TE7jYhdiouLIy4uDmdnZ5YtW4bFYmHFihW0aNFCExeKOJjHLoAyZcrEwoULadWqFU5aRNO+fP89TJoEU6ZAnTpmpxGxO3fu3GHu3Ll89tlnDBw4kEGDBvHVV1/h7OyswkfEQT12AbRs2bKUzCFPats2eO01eOUV601EbKKiopgxYwbjxo3j3LlzdOjQwTZ3mVZlF3Fsmho4LTt/3rrERY0a8M03ZqcRsTuBgYG8+eabNGzYkIMHD7Jo0SIqVapkdiwRsQNPPApMTBYdbS1+MmaEhQvB2dnsRCKmu3z5Ml999RWnT5/mxx9/pHXr1oSEhODr62t2NBGxM2oBSosMw3rZ6++/YckSyJPH7EQipjp79iyDBw/Gz8+Pb7/9lvz58xMfH0+GDBlU/IhIotQClBZ9+y3Mng1z50LVqmanETHV7du3KVeuHBkyZGD48OEMHDgQT09Ps2OJiJ1TC1Bas24dDB1qvXXvbnYaEVPs27ePXr16ERERQebMmVmyZAmnT59m1KhRKn5E5LGoAEpLTp6ETp2gUSMYO9bsNCKpbtu2bbRq1YqKFSuyYcMGQkJCAGjYsCFubm4mpxORtEQFUFoRFWVd5sLDA+bPt3Z+FnEgQ4cOpVatWpw8eZK5c+dy/PhxKlasaHYsEUmj9CmaFhgG9OoFISGwfTuoiV8cQHx8PMuWLcPb25vq1avz/PPPU7duXdq2bUuGDPrbTUSejn6LpAWffQb/+591dfeyZc1OI5Ki7t69y48//kj58uVp3749CxcuBKB27dq0b99exY+IJAv9JrF3K1bAyJHw/vvWeX9E0rFdu3ZRvHhxunfvjp+fH1u2bOHzzz83O5aIpEO6BGbPjh6Frl2hdWsYPdrsNCIpIjIykj179lC3bl0KFy5MnTp1WLx4sfr3iEiKshiGYZgdwt6Eh4fj4eFBWFgY7u7u5oQIC7MucZEhg7Xfj1k5RFLIjRs3+Pbbb/n666+xWCycP39e63OJyFNJyue3LoHZo/h46xw/oaGwdKmKH0lX4uLiGD58OAULFiQgIICuXbuye/duFT8ikqp0CcweffCBte/P779D8eJmpxFJFrGxsWTKlAknJyeOHz/OgAEDGDJkCHm0lIuImEAtQPZm4UIYMwYCAqB5c7PTiDw1wzBYvnw5pUqVYsWKFQAsWrSIgIAAFT8iYhoVQPbk77/B3x9efBHeftvsNCJP7dixYzz33HO0bt2awoULU6RIEQAsFovJyUTE0ekSmL24ds0603Px4vD996APCEnjAgMDadmyJfnz52fJkiW0bdtWhY+I2A21ANmDu3eta3xFRFg7PWfJYnYikSdiGAb79u0DrBMXfvbZZxw6dIh27dqp+BERu6ICyB689RZs3Gid7dnX1+w0Ik9k165d1K5dmxo1anDp0iUyZ87M0KFDyZw5s9nRREQeoALIbD/8AF99Zb01aGByGJGku3LlCv369aNatWpERkayatUqdW4WEbunPkBm+usv6NcPeveG/v3NTiPyRIYOHcry5cv55ptvePXVV8mYUb9WRMT+aSboRKTKTNChoVC1Kvj4wIYNoEngJA1Zt24dsbGxNGvWjAsXLuDs7EyuXLnMjiUiDi5dzQTt5+eHxWJ54Nb/IS0ms2fPfmBfV1fXVE79H2Ji4PnnrTM+L1qk4kfSjNOnT9OxY0caN27MrFmzAPD29lbxIyJpjt23Ve/cuZO4uDjb/QMHDvDss8/ywgsvPPQYd3d3jh49artvV6NPDAMGDoSgINi0Cby9zU4k8p+io6MZO3Ysn332GTly5GDevHl07drV7FgiIk/M7gug3LlzJ7j/2WefUaRIEerXr//QYywWC3nz5k3paE9m6lSYPh1mzrQudiqSBmTIkIGFCxcyZMgQ3n33Xdzc3MyOJCLyVOz+Eti/3blzh3nz5tG7d+9HtupERkbi6+uLj48Pbdu25eDBg6mY8hEOHbK2/gwcCL16mZ1G5JEOHjxI8+bNOXToEM7OzuzevZuAgAAVPyKSLqSpAmjp0qXcvHmTnj17PnSfEiVKMHPmTH799VfmzZtHfHw8tWrV4ty5cw89JiYmhvDw8AS3FFGqFMyeDV9+mTLPL5IMbt68yRtvvEGFChUICQnh5s2bAGTKlMncYCIiyShNjQJr1qwZzs7O/Pbbb499TGxsLKVKlaJLly58/PHHie4zevRoPvzwwwe2p+goMBE7tH79ejp37sytW7d4//33GTJkCC7qpC8iaUS6GgV2z+nTpwkMDKRv375JOi5TpkxUqlSJ4ODgh+4zYsQIwsLCbLezZ88+bVyRNOVeK0/x4sVp1aoVx44dY/jw4Sp+RCTdSjMF0KxZs/Dy8uK5555L0nFxcXHs37+ffPnyPXQfFxcX3N3dE9xEHEFoaCg9e/akdOnShIeHkz9/fmbOnIm3RieKSDqXJgqg+Ph4Zs2ahb+//wOzzPbo0YMRI0bY7n/00UesXr2aEydOsHv3brp3787p06eT3HIkkp7duXOHcePGUbx4cZYvX86oUaPImjWr2bFERFKN3Q+DBwgMDOTMmTP07t37gcfOnDlDhgz/1HE3btzg5ZdfJjQ0lBw5clClShW2bt1K6dKlUzOyiF3r2rUrS5Ys4fXXX+fDDz/E09PT7EgiIqkqTXWCTi2pshSGSCo7ceIEd+7coWTJkgQFBeHs7Ez58uXNjiUikmzSZSdoEXkyUVFRvPfee5QuXZoPPvgAgKpVq6r4ERGHpgJIJJ0yDIP58+dTsmRJxo0bx9tvv21bv0tExNGliT5AIpJ0N27c4NVXX6Vhw4Z8+eWXFC5c2OxIIiJ2Qy1AIunItWvXePPNN7l+/Tqenp4cPHiQJUuWqPgREbmPCiCRdCAuLo7JkydTvHhxpk+fzp49ewDInz+/yclEROyTCiCRNC4oKIgqVarw+uuv07ZtW44dO0bjxo3NjiUiYtfUB0gkjTIMA4vFQlxcHK6uruzYsYPq1aubHUtEJE1QC5BIGhMTE0NAQAANGzYkLi6OGjVqsG3bNhU/IiJJoAJIJI0wDIPffvuNMmXK8MEHH1ClShXu3LkDgMViMTmdiEjaoktgImmEv78/c+fO5dlnn+W3336jVKlSZkcSEUmzVACJ2LGIiAhiY2Px9PSkVatWdOjQgbZt26rFR0TkKekSmIgdio+PZ+7cuRQvXpx33nkHgE6dOtGuXTsVPyIiyUAFkIid2bVrF3Xq1KFHjx7Uq1eP9957z+xIIiLpji6BidiRCxcu8Mwzz1CqVCnWr19PgwYNzI4kIpIuqQVIxGR3795l9uzZxMbG4u3tTWBgILt371bxIyKSglQAiZho3bp1VKxYkd69e7Np0yYA6tevT8aMapwVEUlJKoBETHDq1Ck6duxI48aNyZ49O0FBQVq+QkQkFenPTBETbNmyha1btzJv3jy6du2qkV0iIqlMLUAiqeTgwYN8/PHHAHTt2pVjx47RrVs3FT8iIiZQASSSwgzD4Ntvv6VKlSrMnz+f8PBwLBYL2bJlMzuaiIjDUgEkkoJCQ0Np2bIlgwYNol+/fgQFBeHu7m52LBERh6c+QCIpaNKkSezZs4fff/+dFi1amB1HRET+n8UwDMPsEPYmPDwcDw8PwsLC9Ne6JNmtW7fYvn07jRo1IiYmhrCwMLy8vMyOJSKS7iXl81uXwESS0e7du6lcuTIdO3YkPDwcFxcXFT8iInZIBZBIMoiLi+Pzzz/nmWeeIUuWLGzdulWthyIidkwFkEgyeO+993jnnXd444032L59OyVLljQ7koiIPII6QYs8hatXr5IrVy4GDBhA06ZNadiwodmRRETkMagFSOQJRERE0LNnTypWrEhERAT58+dX8SMikoaoBUgkibZt20b37t25fPkyEydO1ISGIiJpkFqARJLgu+++o27dunh5ebF37178/f21lIWISBqkAkjkMdybLqtChQqMHDmSzZs3U6RIEZNTiYjIk1IBJPIIhmHwww8/0KpVK+Li4qhduzYffvghGTPq6rGISFqmAkjkIW7cuEGXLl3w9/cnV65cxMTEmB1JRESSif6MFUnExo0beemllwgPD2f+/Pl07tzZ7EgiIpKMVACJJOLIkSMULlyYH374gYIFC5odR0REkpkugYn8v6NHj/Lll18C0K9fP9auXaviR0QknVIBJA7PMAymTp1KpUqVmD59OhEREVgsFpycnMyOJiIiKUQFkDi0K1eu0K5dO1599VV69OjBrl27cHNzMzuWiIikMPUBEof2xRdfsHXrVpYuXUrbtm3NjiMiIqnEYtyb4U1swsPD8fDwICwsDHd3d7PjSDKLjo5m165d1K5dm1u3bhEWFka+fPnMjiUiIk8pKZ/fdn0JbPTo0VgslgS3kiVLPvKY//3vf5QsWRJXV1fKlSvH77//nkppJS3Yv38/1apVo02bNkRGRpIlSxYVPyIiDsiuCyCAMmXKcPHiRdvtzz//fOi+W7dupUuXLvTp04c9e/bQrl072rVrx4EDB1Ixsdij+Ph4vvrqK6pWrYrFYmHDhg1axFRExIHZfQGUMWNG8ubNa7vlypXroft+/fXXNG/enLfeeotSpUrx8ccfU7lyZSZOnJiKicUejRgxgjfeeIPXX3+dv/76i3LlypkdSURETGT3BdDx48fx9vamcOHCdOvWjTNnzjx0323bttGkSZME25o1a8a2bdse+RoxMTGEh4cnuEn6EBYWBsBrr73GqlWrmDBhAq6urianEhERs9l1AVSjRg1mz57NqlWrmDx5MidPnqRu3bpEREQkun9oaCh58uRJsC1PnjyEhoY+8nUCAgLw8PCw3Xx8fJLtHMQcUVFRvPLKK1SqVImoqCj8/Pxo1qyZ2bFERMRO2PUw+BYtWti+L1++PDVq1MDX15cFCxbQp0+fZHudESNGMHToUNv98PBwFUFpWFBQEN26dePcuXNMmDCBLFmymB1JRETsjF0XQPfLnj07xYsXJzg4ONHH8+bNy6VLlxJsu3TpEnnz5n3k87q4uODi4pJsOcU8U6ZMYeDAgVSoUIHdu3dTokQJsyOJiIgdsutLYPeLjIwkJCTkocOWa9asydq1axNsW7NmDTVr1kyNeGIHihYtyptvvsnWrVtV/IiIyEPZdQE0bNgwNm7cyKlTp9i6dSvt27fHycmJLl26ANCjRw9GjBhh23/w4MGsWrWKL7/8kiNHjjB69GiCgoIYMGCAWacgqWD+/Pl07tyZ+Ph4mjRpwmeffYazs7PZsURExI7ZdQF07tw5unTpQokSJejUqRM5c+Zk+/bt5M6dG4AzZ85w8eJF2/61atXip59+Ytq0aVSoUIGFCxeydOlSypYta9YpSAoKDw+nR48edOnSBYvFQnR0tNmRREQkjdBSGInQUhj2b8uWLXTv3p1r164xadIkunfvjsViMTuWiIiYKCmf32mqE7TIPTt27MDb25t169ZRqFAhs+OIiEgaoxagRKgFyD4FBwcTGBjIq6++Snx8PPHx8WTMqBpeRESs0s1iqCIAhmEwa9YsKlasyJdffklUVBQZMmRQ8SMiIk9MBZDYtevXr9OpUyd69+5Np06d2L17N1mzZjU7loiIpHH6E1rs2kcffcTatWv53//+R8eOHc2OIyIi6YT6ACVCfYDMFRMTw4EDB6hSpYptcdoCBQqYHUtEROycRoFJmnX48GG6du3K+fPnOXXqFO7u7ipCRUQk2akPkNgFwzD47rvvqFy5MjExMaxevVqLmIqISIpRASR24Z133qF///707t2boKAgKlasaHYkERFJx3QJTEwVFRVF1qxZ6d27N3Xr1qVVq1ZmRxIREQegFiAxxe3btxk4cCDVqlXj9u3blChRQsWPiIikGrUASarbt28fXbt25cSJE3zxxRe4urqaHUlERByMWoAkVU2bNo3q1auTKVMmgoKCGDBggBYxFRGRVKcCSFKVt7c3/fv3Z8eOHZQpU8bsOCIi4qBUAEmKO3jwIMOGDcMwDFq1asX48eNxcXExO5aIiDgwFUCSon7++WeqV6/OqlWruH79utlxREREABVAkkLu3LnDwIED6dq1K+3bt2fHjh3kzJnT7FgiIiKACiBJIbNnz2bq1Kl89913zJ07Vyu4i4iIXdEweElW586do0CBAvTp04datWpRtmxZsyOJiIg8QC1Akizi4+P59NNPKVy4MEFBQTg5Oan4ERERu6UWIHlqN27coEePHixfvpwPPviASpUqmR1JRETkkVQAyVM5cuQILVu25ObNm6xYsYKWLVuaHUlEROQ/6RKYPBUvLy8qVarErl27VPyIiEiaoQJIkiw6OpqhQ4dy9uxZPD09WbRoEYUKFTI7loiIyGNTASRJcvLkSWrXrs3kyZPZu3ev2XFERESeiAogeWy///47VapU4ebNm2zdupXWrVubHUlEROSJqACSx3L58mU6duxInTp1CAoK0kgvERFJ0zQKTB7p6tWruLm54eXlxbZt2yhXrhwZMqhuFhGRtE2fZPJQO3bsoHLlyrz33nsAVKhQQcWPiIikC/o0kwcYhsF3331H3bp1yZ8/P4MHDzY7koiISLJSASQJxMXF0aNHD/r378+rr77Kxo0bKVCggNmxREREkpX6AEkCTk5O5MmTh59++okuXbqYHUdERCRFqAASABYvXsytW7fo3r0748aNMzuOiIhIitIlMAd39+5dhg0bxvPPP8/q1avNjiMiIpIq1ALkwEJDQ+ncuTNbtmxh/PjxDBkyxOxIIiIiqUIFkAN77bXXOH78OOvXr6du3bpmxxEREUk1KoAcjGEYXLp0ibx58zJx4kScnJzImzev2bFERERSlfoAOZDw8HBeeOEFatWqRXR0NPnz51fxIyIiDkktQA7i4MGDdOjQgdDQUGbPno2rq6vZkUREREyjFiAHsGjRIqpXr46LiwtBQUG0b9/e7EgiIiKmsusCKCAggGrVqtkW42zXrh1Hjx595DGzZ8/GYrEkuDl6a0eOHDno1KkT27dvp1ixYmbHERERMZ1dF0AbN26kf//+bN++nTVr1hAbG0vTpk2Jiop65HHu7u5cvHjRdjt9+nQqJbYfZ8+e5e233yYuLo5GjRoxa9YssmTJYnYsERERu2DXfYBWrVqV4P7s2bPx8vJi165d1KtX76HHWSwWh+7cGxgYSJcuXciSJQsDBgygYMGCZkcSERGxK3bdAnS/sLAwADw9PR+5X2RkJL6+vvj4+NC2bVsOHjz4yP1jYmIIDw9PcEuL4uPjGTNmDE2bNqVy5crs2rVLxY+IiEgi0kwBFB8fz5AhQ6hduzZly5Z96H4lSpRg5syZ/Prrr8ybN4/4+Hhq1arFuXPnHnpMQEAAHh4etpuPj09KnEKKW7x4Me+99x7vv/8+v//+O7ly5TI7koiIiF2yGIZhmB3icbz22musXLmSP//8kwIFCjz2cbGxsZQqVYouXbrw8ccfJ7pPTEwMMTExtvvh4eH4+PgQFhaGu7v7U2dPaZcuXSJPnjwYhkFQUBDVqlUzO5KIiEiqCw8Px8PD47E+v9NEC9CAAQNYvnw569evT1LxA5ApUyYqVapEcHDwQ/dxcXHB3d09wS2tmDlzJoUKFWLdunVYLBYVPyIiIo/BrgsgwzAYMGAAS5YsYd26dRQqVCjJzxEXF8f+/fvJly9fCiQ0z+3bt+nbty99+vThpZdeolatWmZHEhERSTPsehRY//79+emnn/j1119xc3MjNDQUAA8PDzJnzgxAjx49yJ8/PwEBAQB89NFHPPPMMxQtWpSbN2/yxRdfcPr0afr27WvaeSS3c+fO0aZNGw4fPsysWbPo2bOn2ZFERETSFLsugCZPngxAgwYNEmz/94f+mTNnyJDhn4asGzdu8PLLLxMaGkqOHDmoUqUKW7dupXTp0qkVO8V5eHiQL18+Zs6cScWKFc2OIyIikuakmU7QqSkpnahSS1xcHGPGjKFr164ULVrU7DgiIiJ2Jymf33bdAiRWV65coWvXrqxbt46CBQuqABIREXlKKoDs3I4dO+jYsSMxMTGsWbOGRo0amR1JREQkzbPrUWCOLjIykpYtW+Lj48OePXtU/IiIiCQTtQDZoaioKCwWC9myZWP16tWUK1cOZ2dns2OJiIikG2oBsjNHjx6lRo0aDBkyBIAqVaqo+BEREUlmKoDsyKJFi6hWrRpxcXG2AkhERESSnwogO2AYBsOGDaNjx440b96cv/76K13NWyQiImJvVADZAYvFgrOzMxMmTOCXX37Bzc3N7EgiIiLpmiZCTERqTYS4adMmQkJC6NWrV4q9hoiIiKNId6vBpzeGYTBu3DgaNWrE/PnziY+PNzuSiIiIQ1EBlMrCw8Pp2LEjb731FsOGDWPFihUJ1jITERGRlKd5gFLZG2+8QWBgIEuWLKFdu3ZmxxEREXFI6gOUiJTsA3Tp0iXCw8MpVqxYsj6viIiIo9NiqHYsT5485MmTx+wYIiIiDk2dT0RERMThqAASERERh6MCSERERByOCiARERFxOCqARERExOGoABIRERGHowJIREREHI4KIBEREXE4KoBERETE4agAEhEREYejAkhEREQcjgogERERcTgqgERERMThqAASERERh5PR7AD2yDAMAMLDw01OIiIiIo/r3uf2vc/xR1EBlIiIiAgAfHx8TE4iIiIiSRUREYGHh8cj97EYj1MmOZj4+HguXLiAm5sbFoslWZ87PDwcHx8fzp49i7u7e7I+d1qg83fs8we9B45+/qD3QOefcudvGAYRERF4e3uTIcOje/moBSgRGTJkoECBAin6Gu7u7g75g3+Pzt+xzx/0Hjj6+YPeA51/ypz/f7X83KNO0CIiIuJwVACJiIiIw1EBlMpcXFwYNWoULi4uZkcxhc7fsc8f9B44+vmD3gOdv32cvzpBi4iIiMNRC5CIiIg4HBVAIiIi4nBUAImIiIjDUQEkIiIiDkcFUCrZtGkTrVu3xtvbG4vFwtKlS82OlKoCAgKoVq0abm5ueHl50a5dO44ePWp2rFQzefJkypcvb5v4q2bNmqxcudLsWKb57LPPsFgsDBkyxOwoqWb06NFYLJYEt5IlS5odK1WdP3+e7t27kzNnTjJnzky5cuUICgoyO1aq8fPze+BnwGKx0L9/f7OjpYq4uDjef/99ChUqRObMmSlSpAgff/zxY63blRI0E3QqiYqKokKFCvTu3ZsOHTqYHSfVbdy4kf79+1OtWjXu3r3Lu+++S9OmTTl06BBZs2Y1O16KK1CgAJ999hnFihXDMAzmzJlD27Zt2bNnD2XKlDE7XqrauXMnU6dOpXz58mZHSXVlypQhMDDQdj9jRsf5FXzjxg1q165Nw4YNWblyJblz5+b48ePkyJHD7GipZufOncTFxdnuHzhwgGeffZYXXnjBxFSpZ+zYsUyePJk5c+ZQpkwZgoKC6NWrFx4eHgwaNCjV8zjO/z6TtWjRghYtWpgdwzSrVq1KcH/27Nl4eXmxa9cu6tWrZ1Kq1NO6desE98eMGcPkyZPZvn27QxVAkZGRdOvWjenTp/PJJ5+YHSfVZcyYkbx585odwxRjx47Fx8eHWbNm2bYVKlTIxESpL3fu3Anuf/bZZxQpUoT69eublCh1bd26lbZt2/Lcc88B1haxn3/+mb/++suUPLoEJqYICwsDwNPT0+QkqS8uLo758+cTFRVFzZo1zY6Tqvr3789zzz1HkyZNzI5iiuPHj+Pt7U3hwoXp1q0bZ86cMTtSqlm2bBlVq1blhRdewMvLi0qVKjF9+nSzY5nmzp07zJs3j969eyf7otv2qlatWqxdu5Zjx44BsG/fPv7880/TGgfUAiSpLj4+niFDhlC7dm3Kli1rdpxUs3//fmrWrEl0dDTZsmVjyZIllC5d2uxYqWb+/Pns3r2bnTt3mh3FFDVq1GD27NmUKFGCixcv8uGHH1K3bl0OHDiAm5ub2fFS3IkTJ5g8eTJDhw7l3XffZefOnQwaNAhnZ2f8/f3Njpfqli5dys2bN+nZs6fZUVLNO++8Q3h4OCVLlsTJyYm4uDjGjBlDt27dTMmjAkhSXf/+/Tlw4AB//vmn2VFSVYkSJdi7dy9hYWEsXLgQf39/Nm7c6BBF0NmzZxk8eDBr1qzB1dXV7Dim+PdfueXLl6dGjRr4+vqyYMEC+vTpY2Ky1BEfH0/VqlX59NNPAahUqRIHDhxgypQpDlkAff/997Ro0QJvb2+zo6SaBQsW8OOPP/LTTz9RpkwZ9u7dy5AhQ/D29jblZ0AFkKSqAQMGsHz5cjZt2kSBAgXMjpOqnJ2dKVq0KABVqlRh586dfP3110ydOtXkZClv165dXL58mcqVK9u2xcXFsWnTJiZOnEhMTAxOTk4mJkx92bNnp3jx4gQHB5sdJVXky5fvgWK/VKlSLFq0yKRE5jl9+jSBgYEsXrzY7Cip6q233uKdd97hxRdfBKBcuXKcPn2agIAAFUCSfhmGwcCBA1myZAkbNmxwuM6PiYmPjycmJsbsGKmicePG7N+/P8G2Xr16UbJkSYYPH+5wxQ9YO4SHhITw0ksvmR0lVdSuXfuBqS+OHTuGr6+vSYnMM2vWLLy8vGydgR3FrVu3yJAhYddjJycn4uPjTcmjAiiVREZGJvhL7+TJk+zduxdPT08KFixoYrLU0b9/f3766Sd+/fVX3NzcCA0NBcDDw4PMmTObnC7ljRgxghYtWlCwYEEiIiL46aef2LBhA3/88YfZ0VKFm5vbA/29smbNSs6cOR2mH9iwYcNo3bo1vr6+XLhwgVGjRuHk5ESXLl3MjpYq3njjDWrVqsWnn35Kp06d+Ouvv5g2bRrTpk0zO1qqio+PZ9asWfj7+zvUNAhgHQ07ZswYChYsSJkyZdizZw/jx4+nd+/e5gQyJFWsX7/eAB64+fv7mx0tVSR27oAxa9Yss6Olit69exu+vr6Gs7OzkTt3bqNx48bG6tWrzY5lqvr16xuDBw82O0aq6dy5s5EvXz7D2dnZyJ8/v9G5c2cjODjY7Fip6rfffjPKli1ruLi4GCVLljSmTZtmdqRU98cffxiAcfToUbOjpLrw8HBj8ODBRsGCBQ1XV1ejcOHCxsiRI42YmBhT8lgMw6QpGEVERERMonmARERExOGoABIRERGHowJIREREHI4KIBEREXE4KoBERETE4agAEhEREYejAkhEREQcjgogEUmX/Pz8+Oqrrx65j8ViYenSpamSR0TsiwogEUlzzp49S+/evfH29sbZ2RlfX18GDx7MtWvXzI4mImmECiARSVNOnDhB1apVOX78OD///DPBwcFMmTKFtWvXUrNmTa5fv55qWe7cuZNqryUiyUsFkIikKf3798fZ2ZnVq1dTv359ChYsSIsWLQgMDOT8+fOMHDky0eOOHz9OvXr1cHV1pXTp0qxZs+aBfc6ePUunTp3Inj07np6etG3bllOnTtke79mzJ+3atWPMmDF4e3tTokSJlDpNEUlhKoBEJM24fv06f/zxB6+//jqZM2dO8FjevHnp1q0bv/zyC/cvcRgfH0+HDh1wdnZmx44dTJkyheHDhyfYJzY2lmbNmuHm5sbmzZvZsmUL2bJlo3nz5glaetauXcvRo0dZs2YNy5cvT7mTFZEUldHsACIij+v48eMYhkGpUqUSfbxUqVLcuHGDK1euJNgeGBjIkSNH+OOPP/D29gbg008/pUWLFrZ9fvnlF+Lj45kxYwYWiwWAWbNmkT17djZs2EDTpk0ByJo1KzNmzMDZ2TklTlFEUokKIBFJc+5v4fkvhw8fxsfHx1b8ANSsWTPBPvv27SM4OBg3N7cE26OjowkJCbHdL1eunIofkXRABZCIpBlFixbFYrFw+PBh2rdv/8Djhw8fJkeOHOTOnTvJzx0ZGUmVKlX48ccfH3js38+XNWvWJD+3iNgf9QESkTQjZ86cPPvss3z33Xfcvn07wWOhoaH8+OOPdO7c2XYJ655SpUpx9uxZLl68aNu2ffv2BPtUrlyZ48eP4+XlRdGiRRPcPDw8Uu6kRMQUKoBEJE2ZOHEiMTExNGvWjE2bNnH27FlWrVrFs88+S/78+RkzZswDxzRp0oTixYvj7+/Pvn372Lx58wOjxbp160auXLlo27Ytmzdv5uTJk2zYsIFBgwZx7ty51Do9EUklKoBEJE0pVqwYQUFBFC5cmE6dOlGkSBH69etHw4YN2bZtG56eng8ckyFDBpYsWcLt27epXr06ffv2faBQypIlC5s2baJgwYJ06NCBUqVK0adPH6Kjo3F3d0+t0xORVGIxktqbUERERCSNUwuQiIiIOBwVQCIiIuJwVACJiIiIw1EBJCIiIg5HBZCIiIg4HBVAIiIi4nBUAImIiIjDUQEkIiIiDkcFkIiIiDgcFUAiIiLicFQAiYiIiMNRASQiIiIO5/8AbsNyyNnRPTsAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import math\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "n = 8\n",
    "Il = []\n",
    "Ir = []\n",
    "def fx(x):\n",
    "    return math.exp(x)\n",
    "def xl_ractangle(start_num,stop_num,n):\n",
    "    #```Left```\n",
    "    dx = (stop_num- start_num)/(n+1)\n",
    "    xl = []\n",
    "    for i in range(n):\n",
    "        xl.append(start_num+i*dx)\n",
    "    sumfx = 0.00\n",
    "    for xp in xl:\n",
    "        fxv = fx(xp)\n",
    "        sumfx = sumfx + fxv\n",
    "    return sumfx*dx\n",
    "\n",
    "def xr_ractangle(start_num,stop_num,n):\n",
    "    #````Right````\n",
    "    dx = (stop_num- start_num)/(n+1)\n",
    "    xl = []\n",
    "    for i in range(n):\n",
    "        xl.append(start_num+(i+1)*dx)\n",
    "    sumfx = 0.00\n",
    "    for xp in xl:\n",
    "        fxv = fx(xp)\n",
    "        sumfx = sumfx + fxv\n",
    "    return sumfx*dx\n",
    "for k in range(1,n+1,1):\n",
    "    il = xl_ractangle(0,math.pi,k)\n",
    "    ir = xr_ractangle(0,math.pi,k)\n",
    "    Il.append(il)\n",
    "    Ir.append(ir)\n",
    "Ix = range(1,n+1,1)\n",
    "line1 = plt.plot(Ix,Il,label = \"Left Rectangle\",linewidth = \"1\", color = \"black\", linestyle = \"--\")\n",
    "line2 = plt.plot(Ix,Ir,label = \"Right Rectangle\",linewidth = \"1\", color = \"red\", linestyle = \"-\")\n",
    "plt.xlabel(\"Older\")\n",
    "plt.ylabel(\"Value\")\n",
    "plt.title(\"Compound integrals\")\n",
    "plt.legend()\n",
    "plt.show()\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 变步长"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "22.14068396642764\n"
     ]
    }
   ],
   "source": [
    "import math\n",
    "import numpy as np\n",
    "import matplotlib as plt\n",
    "\n",
    "def fx(x):\n",
    "    return math.exp(x)\n",
    "\n",
    "def simp(a,b,eps):\n",
    "    n = 2\n",
    "    h = (b-a)/n\n",
    "    T1 = 0.5 * h * (fx(a) + fx(b))\n",
    "    tol = 1\n",
    "    while tol > eps:\n",
    "        T0 = T1\n",
    "        n = 2 * n\n",
    "        h = (b-a)/n\n",
    "        x = []\n",
    "        for i in range(n):\n",
    "            x.append(a + i * h)\n",
    "        y = []\n",
    "        for i in range(n):\n",
    "            y.append(fx(x[i]))\n",
    "        y2=0.00\n",
    "        for i in range(n-1):\n",
    "            if i > 0:\n",
    "                y2 = y2 + y[i]\n",
    "        T1 = h * (0.5 * y[0] + y2 + 0.5 * y [n-1])\n",
    "        tol = abs(T1 -T0)\n",
    "    return T1\n",
    "print(simp(0,math.pi,0.00001))"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 辛普森公式"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3.141592653589793\n"
     ]
    }
   ],
   "source": [
    "import math\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "\n",
    "def fx(x):\n",
    "    return 4.0/(1.0+pow(x,2))\n",
    "\n",
    "\n",
    "def SimpInt1(a, b, n_node):\n",
    "    n = 2*n_node + 1\n",
    "    h = (b-a)/(n-1)\n",
    "    x= []\n",
    "    for i in range(n):\n",
    "        x.append(a + i * h)\n",
    "    y = []\n",
    "    for i in x:\n",
    "        y.append(fx(i))\n",
    "    y2 = 0.00\n",
    "    for i in range(n-1):\n",
    "        if i >0:\n",
    "            if i%2==1:\n",
    "                y2 =y2 + y[i]\n",
    "    y3 = 0.00\n",
    "    for i in range(n-2):\n",
    "        if i >1:\n",
    "            if i%2==0:\n",
    "                y3 = y3 + y[i]\n",
    "    S = (h/3)*(y[0]+4*y2+2*y3+y[n-1])\n",
    "    return S\n",
    "print(SimpInt1(0,1,100))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
